package account;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Kuemmert sich um die Verarbeitung der Ein- und Auszahlungen der einzelnen Konten.
 *
 * @author Patrick Bauer
 */
public class AccountController implements ActionListener {
    /**
     * Das Datenmodel zum Aufrufen entsprechener Funktionen zur Ein- und Auszahlung.
     */
    private AccountModel model;

    /**
     * Setzt das uebergebene Model als Attribut
     * 
     * @param model das Datenmodel
     */
    public AccountController(AccountModel model) {
        this.model = model;
    }

    /**
     * Wird aufgerufen wenn in Texteingabefeldern Daten eingetragen wurden.<br>
     * Leitet Anfragen an das Model weiter und uebergibt Fehlermeldungen des Models an den aufrufenden View.
     *
     * @param e
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        JTextField field = (JTextField) e.getSource();
        JPanel panel = (JPanel) field.getParent();
        AccountActionView view = (AccountActionView) panel.getParent();
        
        view.setErrorMessage(" ");
        
        try {
            if(field.getName().compareTo("Raise") == 0){
                this.model.raiseBalance(view.getIndex(), field.getText());
            } else {
                this.model.lowerBalance(view.getIndex(), field.getText());
            }
        } catch (NumberFormatException ex) {
            view.setErrorMessage(ex.getMessage());
        }
        
        field.setText("");
    }
    
}
